4D Chart v13

データベース内のレコードを使ってグラフを作成する (例題)

ホーム

 
4D Chart v13
データベース内のレコードを使ってグラフを作成する (例題)

データベース内のレコードを使ってグラフを作成する (例題)  


 

 

この節ではCT Chart selection関数とCT Chart data関数を使用した2次元グラフと3次元グラフの作成例を紹介します。

配列を使用した2次元グラフと3次元グラフの作成方法は、配列を使ってグラフを作成する (例題)を参照してください。

各項目で以下の例を説明します:

  • 例に使用される状況の説明
  • サンプルデータベースの構造
  • サンプルデータを使用して、すべてメソッドで作成されたグラフ
  • サンプルグラフの作成に使用されたコード

あなたがソフトウェア会社を経営し、政府、教育機関、小売りなど、多岐に渡る分野の顧客を抱えているとします。あなたのデータベースは顧客と営業の履歴を記録しています。

データベースでは、以下のテーブルを使用して情報を保存します:

4D Chartを使用して、以下のグラフを生成します。これは、各分野での全営業成績の割合を示したものです。

以下はサンプルグラフを作成するために使用されたGRAPH PROFILEメソッドのコードです。

  `メソッド: GRAPH PROFILE
  `カテゴリー: 顧客タイプ
  `値: 購入されたユニット数
 
 C_LONGINT($Left;$Top;$Right;$Bottom)
 C_LONGINT($Area;$Chart;$Title;$Locate)
 C_LONGINT($Left2;$Top2;$Right2;$Bottom2)
 
  `チャート化するレコードのセレクションを作成
 ALL RECORDS([Market Data])
 
  `系列データフィールドの配列
 ARRAY LONGINT($aFields;1)
 $aFields{1}:=Field(->[Market Data]NumberOfUnits)
 
  `インターフェース要素を隠す
 CT SET DISPLAY(Area;1;0) `メニューを隠す
 CT SET DISPLAY(Area;2;0) `チャートツールを隠す
 CT SET DISPLAY(Area;3;0) `オブジェクトツールを隠す
 CT SET DISPLAY(Area;6;0) `スクロールバーを隠す
 CT SET DISPLAY(Area;9;0) `ルーラーを隠す
 
  `円グラフを作成する
 $Chart:=CT Chart selection(Area;6;1;1;Table(->[Market Data]);2;$aFields)
 
  `3番目のパイウエッジを切り離す
 CT EXPLODE PIE(Area;$Chart;2;10)
 
 &NBSP`凡例を配置する場所を設定する(下, 水平方向)
 CT SET LEGEND ATTRIBUTES(Area;$Chart;1;0;0;0;8;0;0)
 
  `左上隅にチャートタイトルを追加する
 $Title:=CT Draw text(Area;1;1;210;3;"Client Distribution by Sector")
 
  `タイトルをフォーマットする (Palatino, 14 ポイント, ボールド, 中央揃え, 黒)
 $Color:=CT Index to color(16)
 $Font:=CT Font number("Palatino")
 CT SET TEXT ATTRIBUTES(Area;$Title;$Font;14;1;$Color;1)
 
  `エリア内のオブジェクトを中央に揃えるためにエリア境界を取得する
 CT GET AREA BOUNDARY(Area;1;$Left;$Top;$Right;$Bottom)
 
  `チャートをウインドウサイズから50ポイント小さく変更する
 CT SIZE(Area;$Chart;$Right-50;$Bottom-50)
 
  `チャートを中央揃えする
 CT GET BOUNDARY(Area;$Chart;$Left2;$Top2;$Right2;$Bottom2)
 $Locate:=(($Right-$Left)-($Right2-$Left2))/2
 CT MOVE(Area;$Chart;$Locate;$Top2)
 
  `タイトルを中央揃えする
 CT GET BOUNDARY(Area;$Title;$Left2;$Top2;$Right2;$Bottom2)
 $Locate:=(($Right-$Left)-($Right2-$Left2))/2
 CT MOVE(Area;$Title;$Locate;$Top2)
 
  `チャートを9ポイント分下げ、タイトルの下に表示されるようにする
 CT GET BOUNDARY(Area;$Chart;$Left;$Top;$Right;$Bottom)
 CT MOVE(Area;$Chart;$Left;$Top+9)
 
  `すべのオブジェクトの選択を解除する
 CT SELECT(Area;-1;0)

新車の市場においてデータベースを使用して手持ちの金で購入できる最高の車を決定しようとしています。5台の車に選択を絞り込み、それぞれの車で年間の登録、保険、メンテナンスの経費がいくらかかるかを比べたいと思っています。

以下のテーブルにデータを入力します:

収集した情報を解析するために、3次元グラフで情報をグラフ化することにしました。4D Chartを使用して以下のグラフを作成します:

GRAPH CARSメソッドはこのグラフを作成するために使われたものです。このメソッドはCT Chart selectionコマンドを使用します。CT Chart selectionを使用するときにはフィールドの配列を渡します。フィールド名は系列名になり、フィールドの値が数値軸上でグラフ化されます。この例ではRegistration、Insurance、Maintenanceの各フィールドは、系列と数値のために使用されています。

以下はGRAPH CARSメソッドです。

  `メソッド: GRAPH CARS
  `項目: 車種
  `系列: 経費カゴリー
  `数値: 経費
 
 C_LONGINT($Left;$Top;$Right;$Bottom)
 C_LONGINT($Area;$Chart;$Title;$Locate;$i)
 C_LONGINT($Left2;$Top2;$Right2;$Bottom2)
 
 &NBSP`チャート用のレコードセレクションを生成する
 ALL RECORDS([Car Expenses])
 ORDER BY([Car Expenses];[Car Expenses]Cost;>)
 
 &NBSP`系列と数値のデータをフィールド配列に入れる
 ARRAY LONGINT($aFields;3)
 $aFields{1}:=Field(->[Car Expenses]Registration)
 $aFields{2}:=Field(->[Car Expenses]Maintenance)
 $aFields{3}:=Field(->[Car Expenses]Insurance)
 
 &NBSP`インタフェース要素を隠す
 CT SET DISPLAY(Area;1;0) `メニューを隠す
 CT SET DISPLAY(Area;2;0) `チャートツールを隠す
 CT SET DISPLAY(Area;3;0) `オブジェクトツールを隠す
 CT SET DISPLAY(Area;6;0) `スクロールバーを隠す
 CT SET DISPLAY(Area;9;0) `ルーラを隠す
 
 &NBSP`3D棒グラフを作成する
 $Chart:=CT Chart selection(Area;100;1;1;Table(->[Car Expenses]);1;$aFields)
 
 &NBSP`スケールを設定する
 CT SET REAL SCALE(Area;$Chart;0;0;0;0;0;3000;500;100)
 
  `凡例は表示しない
 CT SET LEGEND ATTRIBUTES(Area;$Chart;0;0;-1;-1;0;0;0)
 
 &NBSP`チャートタイトルを追加する
 CT SET TITLE ATTRIBUTES(Area;$Chart;0;3;0;"Car Type")
 CT SET TITLE ATTRIBUTES(Area;$Chart;1;0;0;"") `do not show
 CT SET TITLE ATTRIBUTES(Area;$Chart;2;2;3;"Expense (in dollars)")
 
 &NBSP`左上隅にタイトルを追加する
 $Title:=CT Draw text(Area;1;1;300;3;"Annual Expenses for Import Sedans")
 
 &NBSP`タイトルをフォーマットする (Palatino, 14 point, Bold, Center, Black)
 $Color:=CT Index to color(16)
 $Font:=CT Font number("Palatino")
 CT SET TEXT ATTRIBUTES(Area;$Title;$Font;14;1;$Color;1)
 
 &NBSP`1番目の系列の色を緑に設定する
 $Color:=CT Index to color(10)
 CT SET CHART FILL ATTRIBUTES(Area;$Chart;8;100;3;$Color)
 
 &NBSP`2番目の系列の色を黄に設定する
 $Color:=CT Index to color(2)
 CT SET CHART FILL ATTRIBUTES(Area;$Chart;8;200;3;$Color)
 
 &NBSP`3番目の系列の色を赤に設定する
 $Color:=CT Index to color(4)
 CT SET CHART FILL ATTRIBUTES(Area;$Chart;8;300;3;$Color)
 
 &NBSP`すべのプロット矩形用に塗りつぶし属性を設定する
 $Color:=CT Index to color(8)
 For($i;1;3)
    CT SET CHART FILL ATTRIBUTES(Area;$Chart;1;$i;5;$Color)
 End for
 
 &NBSP`テキスト属性ラベルを設定する (Palatino, 9 point, bold italic)
 $Font:=CT Font number("Palatino")
 For($i;0;2)
    CT SET CHART TEXT ATTRIBUTES(Area;$Chart;4;$i;$Font;9;3;-1)
 End for
 
 &NBSP`タイトル用のテキスト属性を設定する (Palatino, 12 point, bold)
 $Font:=CT Font number("Palatino")
 For($i;0;2)
    CT SET CHART TEXT ATTRIBUTES(Area;$Chart;5;$i;$Font;14;1;-1)
 End for
 
 &NBSP`中央揃え用のエリア寸法を取得する
 CT GET AREA BOUNDARY(Area;1;$Left;$Top;$Right;$Bottom)
 
 &NBSP`チャートをウインドウサイズから50ポイント小さく変更する
 CT SIZE(Area;$Chart;$Right-50;$Bottom-50)
 
 &NBSP`チャートを中央揃えする
 CT GET BOUNDARY(Area;$Chart;$Left2;$Top2;$Right2;$Bottom2)
 $Locate:=(($Right-$Left)-($Right2-$Left2))/2
 CT MOVE(Area;$Chart;$Locate;$Top2)
 
 &NBSP`タイトルを中央揃えする
 CT GET BOUNDARY(Area;$Title;$Left2;$Top2;$Right2;$Bottom2)
 $Locate:=(($Right-$Left)-($Right2-$Left2))/2
 CT MOVE(Area;$Title;$Locate;$Top2)
 
 &NBSP`チャートを9ポイント下げる
 CT GET BOUNDARY(Area;$Chart;$Left;$Top;$Right;$Bottom)
 CT MOVE(Area;$Chart;$Left;$Top+9)
 
 &NBSP`すべのオブジェクトの選択を解除する
 CT SELECT(Area;-1;0)

教育プログラムの西日本地区担当者であり、該当地区の生徒達の標準テストスコアを別のテスト日付と比較したいとします。

データベースには、テスト日付と出身地にタグが付いて、該当地区の生徒のスコアが保存されています。

4D Chartを使用して、以下のグラフを作成します:

前述のグラフはGRAPH SCORES 2Dメソッドで作成されています。以下はGRAPH SCORES 2Dメソッドのコードです:

  `メソッド: GRAPH SCORES 2D
  `項目: テスト日付
  `系列: メンバーの地域
  `数値: テストスコア
 
 C_LONGINT($Left;$Top;$Right;$Bottom)
 C_LONGINT($Left2;$Top2;$Right2;$Bottom2)
 C_LONGINT($Area;$Chart;$Title;$Locate;$Score;$Color;$Font;$Rect)
 
 ALL RECORDS([Test Scores])
 ORDER BY([Test Scores];[Test Scores]Test Date;>)
 
  `インタフェース要素を隠す
 CT SET DISPLAY(Area;1;0) `メニューを隠す
 CT SET DISPLAY(Area;2;0) `チャートツールを隠す
 CT SET DISPLAY(Area;3;0) `オブジェクトツールを隠す
 CT SET DISPLAY(Area;6;0) `スクロールバーを隠す
 CT SET DISPLAY(Area;9;0) `ルーラを隠す
 
 &NBSP`2D 棒グラフを作成する
 $Chart:=CT Chart data(Area;2;1;1;1;Table(->[Test Scores]);2;4;3)
 
 &NBSP`水平棒グラフにする
 ARRAY LONGINT($aOptions;4)
 $aOptions{1}:=1 `方向: 水平
 $aOptions{2}:=0 `積み重ねなし
 $aOptions{3}:=0 `重ね
 $aOptions{4}:=50 `間隔
 CT SET CHART OPTIONS(Area;$Chart;$aOptions)
 
 &NBSP`軸タイトルを表示する
 CT SET TITLE ATTRIBUTES(Area;$Chart;0;2;3;"Test Date")
 CT SET TITLE ATTRIBUTES(Area;$Chart;2;3;0;"Average Score (in Points)")
 
 &NBSP`項目軸タイトルをフォーマット (Helvetica, Black, Bold italic, 12 point)
 $Color:=CT Index to color(16)
 $Font:=CT Font number("Helvetica")
 CT SET CHART TEXT ATTRIBUTES(Area;$Chart;5;0;$Font;12;3;$Color)
 
 &NBSP`数値軸タイトルをフォーマット (Palatino, Red, Bold Italic, 12 point)
 $Color:=CT Index to color(4)
 $Font:=CT Font number("Palatino")
 CT SET CHART TEXT ATTRIBUTES(Area;$Chart;5;2;$Font;12;3;$Color)
 
 &NBSP`凡例位置を下部中央、横方向にする
 CT SET LEGEND ATTRIBUTES(Area;$Chart;1;0;0;0;8;0;0)
 
 &NBSP`チャートタイトルを左上隅に追加する
 $Title:=CT Draw text(Area;1;1;350;3;"Member State Test Scores")
 
 &NBSP`チャートタイトルをフォーマットする (Geneva, 14 point, Bold, Center, Blue)
 $Color:=CT Index to color(7)
 $Font:=CT Font number("Geneva")
 CT SET TEXT ATTRIBUTES(Area;$Title;$Font;14;1;$Color;1)
 
 &NBSP`カスタムスケールを使用する
 CT SET REAL SCALE(Area;$Chart;0;0;0;0;0;220;20;5)
  `Get window dimensions to use for centering
 CT GET AREA BOUNDARY(Area;1;$Left;$Top;$Right;$Bottom)
 
 &NBSP`チャートをウインドウサイズから50ポイント小さく変更する
 CT SIZE(Area;$Chart;$Right-50;$Bottom-50)
 
 &NBSP`チャートを横方向中央揃えにする
 CT GET BOUNDARY(Area;$Chart;$Left2;$Top2;$Right2;$Bottom2)
 $Locate:=(($Right-$Left)-($Right2-$Left2))/2
 CT MOVE(Area;$Chart;$Locate;$Top2)
 
 &NBSP`タイトルを横方向中央揃えにする
 CT GET BOUNDARY(Area;$Title;$Left2;$Top2;$Right2;$Bottom2)
 $Locate:=(($Right-$Left)-($Right2-$Left2))/2
 CT MOVE(Area;$Title;$Locate;$Top2)
 
 &NBSP`チャートをタイトルから10ポイント分下げる
 CT GET BOUNDARY(Area;$Chart;$Left;$Top;$Right;$Bottom)
 CT MOVE(Area;$Chart;$Left;$Top+10)
 
 &NBSP`チャートとタイトルに灰色の矩形で枠組みをする
 $Rect:=CT Draw rectangle(Area;$Left-2;$Top2-2;$Right+2;$Bottom+2+10;0)
 CT SET FILL ATTRIBUTES(Area;$Rect;3;CT Index to color(13))
 CT SET LINE ATTRIBUTES(Area;$Rect;3;CT Index to color(15);1)
 
 &NBSP`すべのオブジェクトを縦方向に中央揃えする
 CT GET AREA BOUNDARY(Area;1;$Left;$Top;$Right;$Bottom)
 CT GET BOUNDARY(Area;-1;$Left2;$Top2;$Right2;$Bottom2)
 $Locate:=(($Bottom-$Top)-($Bottom2-$Top2))/2
 CT MOVE(Area;-1;$Left2;$Locate)
 
 &NBSP`矩形を背面に送る
 CT SELECT(Area;-1;0) `すべの選択を解除する
 CT SELECT(Area;$Rect;1) `矩形を選択する
 CT DO COMMAND(Area;24002) `背面に送る
 CT SELECT(Area;-1;0) `すべの選択を解除する
 
 &NBSP`すべの選択を解除する
 CT SELECT(Area;-1;0)

自分の会社の株式が同業他社と比べてどのような動きをしているのかを知りたいと仮定します。各企業の株式の終値を4Dデータベースで記録する場合もあります。データベースでは、株価は月平均で記録されています。

以下のグラフは、Joe Bob’s Chemicals社の株価を業界の平均と比較しています。グラフ上のデータは何の操作もせずにデータベースから直接取られたものです。

STOCKS CHART メソッドは、データベースから直接取られたフィールド値を使用してグラフを生成します。データベースに格納された値は既に平均として計算されているので、追加の計算を行う必要はありません。代りに日々の値を記録していた場合には、月ごとの平均値を計算し、それを配列に格納してから CT Chart arrays 関数を使用してグラフを作成します。

月ごとの値を平均化する例は配列を使ってグラフを作成する (例題)を参照してください。

以下はSTOCKS CHARTメソッドです:

  `メソッド: GRAPH STOCKS
  `項目: 月
  `系列: 企業と業界のインデックス
  `値: 平均株価
 
 C_LONGINT($Left;$Top;$Right;$Bottom)
 C_LONGINT($Left2;$Top2;$Right2;$Bottom2)
 C_LONGINT($Area;$Chart;$Title;$Locate;$Font;$Color)
 
 &NBSP`チャート用のレコード選択を生成する
 ALL RECORDS([Stock Reports])
 ORDER BY([Stock Reports];[Stock Reports]Month;>)
 
 &NBSP`インターフェース要素を隠す
 CT SET DISPLAY(Area;1;0) `メニューを隠す
 CT SET DISPLAY(Area;2;0) `チャートツールを隠す
 CT SET DISPLAY(Area;3;0) `オブジェクトツールを隠す
 CT SET DISPLAY(Area;6;0) `スクロールバーを隠す
 CT SET DISPLAY(Area;9;0) `ルーラーを隠す
 
 &NBSP`3D線グラフを作成する
 $Chart:=CT Chart data(Area;101;2;1;1;Table(->[Stock Reports]);2;1;3)
 
 &NBSP`スケールのセットアップ
 CT SET REAL SCALE(Area;$Chart;0;0;0;0;5;20;5;1)
 
 &NBSP`チャートを両方向に0度回転させる
 CT SET 3D VIEW(Area;$Chart;0;0)
 
 &NBSP`背景のカラーを設定する(グレー)
 CT SET CHART FILL ATTRIBUTES(Area;$Chart;1;1;5;CT Index to color(15))
 
 &NBSP`系列のカラーを設定する(緑; 赤)
 CT SET CHART FILL ATTRIBUTES(Area;$Chart;8;100;3;CT Index to color(10))
 CT SET CHART FILL ATTRIBUTES(Area;$Chart;8;200;3;CT Index to color(4))
 
 &NBSP`系列の線のカラーを設定する(緑、赤、4ポイント)
 CT SET CHART LINE ATTRIBUTES(Area;$Chart;8;100;3;CT Index to color(10);4)
 CT SET CHART LINE ATTRIBUTES(Area;$Chart;8;200;3;CT Index to color(4);4)
 
 &NBSP`チャートテキストの属性を設定する (Palatino, bold italic, 12 point)
 $Font:=CT Font number("Palatino")
 $Color:=CT Index to color(16) `black
 CT SET CHART TEXT ATTRIBUTES(Area;$Chart;5;0;$Font;12;3;$Color)
 $Color:=CT Index to color(10) `green
 CT SET CHART TEXT ATTRIBUTES(Area;$Chart;5;2;$Font;12;3;$Color)
 
 &NBSP`グラフ軸ラベルを表示する
 CT SET LABEL ATTRIBUTES(Area;$Chart;2;3;0;"$###,##0")
 CT SET LABEL ATTRIBUTES(Area;$Chart;0;3;3;"##/##/##")
 CT SET LABEL ATTRIBUTES(Area;$Chart;1;0;0;"") `このラベルを隠す
 
 &NBSP`項目軸と数値軸のタイトルを追加する
 CT SET TITLE ATTRIBUTES(Area;$Chart;0;3;0;"Date")
 CT SET TITLE ATTRIBUTES(Area;$Chart;2;2;3;"Average Stock Price")
 
 &NBSP`凡例位置を上部中央、横方向に設定する
 CT SET LEGEND ATTRIBUTES(Area;$Chart;1;0;0;0;7;0;0)
 
 &NBSP`チャートタイトルを左上隅に追加する
 $Title:=CT Draw text(Area;1;1;350;3;"Company Performance vs Industrial
 Indicator")
 
 &NBSP`チャートタイトルをフォーマット (Palatino, 14 point, Bold, Center, Blue)
 $Color:=CT Index to color(7)
 $Font:=CT Font number("Palatino")
 CT SET TEXT ATTRIBUTES(Area;$Title;$Font;14;1;$Color;1)
 
 &NBSP`エリアオブジェクトを中央揃えするためにエリア境界を取得する
 CT GET AREA BOUNDARY(Area;1;$Left;$Top;$Right;$Bottom)
 
 &NBSP`チャートのウインドウサイズを50ポイント少なく再定義する
 CT SIZE(Area;$Chart;$Right-50;$Bottom-50)
 
 &NBSP`チャートを中央揃えする
 CT GET BOUNDARY(Area;$Chart;$Left2;$Top2;$Right2;$Bottom2)
 $Locate:=(($Right-$Left)-($Right2-$Left2))/2
 CT MOVE(Area;$Chart;$Locate;$Top2)
 
 &NBSP`チャートタイトルを中央揃えする
 CT GET BOUNDARY(Area;$Title;$Left2;$Top2;$Right2;$Bottom2)
 $Locate:=(($Right-$Left)-($Right2-$Left2))/2
 CT MOVE(Area;$Title;$Locate;$Top2)
 
 &NBSP`チャートを10ポイント下げる
 CT GET BOUNDARY(Area;$Chart;$Left;$Top;$Right;$Bottom)
 CT MOVE(Area;$Chart;$Left;$Top+10)
 
 &NBSP`すべのオブジェクトの選択を解除する
 CT SELECT(Area;-1;0)

 
プロパティ 

プロダクト: 4D Chart
テーマ: ランゲージの概要

 
参照 

配列を使ってグラフを作成する (例題)